#pragma once

#include <GL/glew.h>
#include <GL/freeglut.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <vector>

#include "ilcontainer.h"
#include "picture.h"

using namespace std;

class Window
{
	public:
		Window(int w, int h);
		~Window();
		 
		void DisplayFunc();
		void KeyboardFunc(unsigned char c, int x, int y);
		void MouseFunc(int button, int state, int x, int y);
		void MotionFunc(int x, int y);
		void ReshapeFunc(int w, int h);
		void TimerFunc(int value);

		void ToggleWireFrame();
		void ToggleDebug();

		bool Initialize();
		void TakeDown();
		void DrawSkybox();
		ILContainer skybox_container;

	private:
		int x;
		int y;
		int width;
		int height;
		GLfloat aspect;

		bool wire_frame;
		bool debug;

		Picture * picture;

		void ClearWindow();
};
